package com.itlong.cloud.commons.wechat.service;

import com.itlong.cloud.POJO.VO.app.AppPayParkFeeNoticeVO;
import org.springframework.web.bind.annotation.RequestParam;

import java.math.BigDecimal;
import java.util.Map;

/**
 * <desc>
 *  演示版App微信支付暴露接口
 * </desc>
 *
 * @createDate 2018/4/23
 */
public interface IWeChatPayService {

    /**
     * <desc>
     *      调微信后台统一下单接口/商户后台保存订单
     * <desc/>
     *
     * @param  total   支付金额
     * @param billsId 账单编号
     * @param feeType 缴费类型 1物业费 2维修费 3临时车缴费 4月卡缴费
     * @param openId 公众号支付需要用此参数，用户在公众号中的唯一标识
     * @param payType 支付类型 2app支付 3小程序支付 4公众号支付 5h5支付
     * @param deviceUnique 设备编号
     * @param roomId 房间编号
     * @param times 次数
     * @param amount 金额
     * @return
     * @author Juguang.S
     * @createDate 2018/4/23
     */
    Map<Object,Object> saveOrder(String total, String loginUserId, String billsId,String feeType,String openId,Integer payType,String deviceUnique,String roomId,String ip,String times,String amount);

    /**
     * <desc>
     *      微信支付结果回调通知
     * <desc/>
     * @param
     * @return
     * @author Juguang.S
     * @createDate 2018/4/25
     */
    AppPayParkFeeNoticeVO payResultNotice(String rturnInfo);

    /**
     * <desc>
     *      演示版微信支付结果回调通知
     * <desc/>
     * @param
     * @return
     * @author Juguang.S
     * @createDate 2018/8/29
     */
    String showPayResultNotice(String rturnInfo);

    /**
     * <desc>
     *      根据商户订单号查询订单
     * <desc/>
     * @param  tradeId  商户订单号
     * @return
     * @author Juguang.S
     * @createDate 2018/4/25
     */
    Map<String,Object> getOrderBytradeId(String tradeId);

    /**
     * <desc>
     *      定时任务获取前一天的微信对账单
     * <desc/>
     * @param
     * @return
     * @author Juguang.S
     * @createDate 2018/8/28
     */
    void downloadWechatBill()  throws Exception;

    /**
     * <desc>
     *      查询第三方支付管理微信支付是否被禁用
     * <desc/>
     * @param thirdPayType 1微信支付 2银联转账
     * @return
     * @author Juguang.S
     * @createDate 2018/9/26
     */
    Integer getThirdPayStatus(Integer thirdPayType);

    /**
     * <desc>
     *      查询该账单是否已被支付
     * <desc/>
     * @param billsId 账单编号
     * @return
     * @author Juguang.S
     * @createDate 2018/10/09
     */
    Integer getBillStatus(String billsId);

    /**
     * <desc>
     *      保存停车场错误指令
     * <desc/>
     * @param projectId 项目编号
     * @param requestContent 请求内容
     * @return
     * @author Juguang.S
     * @createDate 2018/11/15
     */
    void sendMessager(String projectId,String requestContent,Integer payType) throws Exception;

    /**
     * <desc>
     *      处理零元支付情况通知富士
     * </desc>
     *
     * @param billsId 账单ID
     * @return 缴费记录
     * @author Juguang.S
     * @createDate 2018/12/13
     */
    AppPayParkFeeNoticeVO getZeroPaymentNotice(String billsId) throws Exception;

    /**
     * <desc>
     *      查询账单的金额
     * <desc/>
     * @param billsId 账单编号
     * @param type 支付类型 1代表除云服务费外的缴费 2代表云服务费的缴费
     * @return
     * @author Juguang.S
     * @createDate 2019/09/17
     */
    String getBillTotal(String billsId,Integer type);
}
